package pe.com.bbva.ge.vista.vaadin.aplicacion;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import pe.com.bbva.ge.vista.vaadin.ui.AnomaliaUI;
import pe.com.bbva.ge.vista.vaadin.ui.AtmUI;
import pe.com.bbva.ge.vista.vaadin.ui.LoginUI;
import pe.com.bbva.ge.vista.vaadin.ui.PrincipalUI;
import pe.com.bbva.ge.vista.vaadin.ui.RemitoUI;

import com.vaadin.Application;
import com.vaadin.ui.Window;

public class GestionEfectivoAplicacion extends Application {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7944738967177936510L;
	
	Window mainWindow;
	
	@Override
	public void init() {
		
		mainWindow = new Window("Gestión Efectivo [Maquetado]");
		
		mainWindow.getContent().setHeight("100%");
		mainWindow.getLayout().setMargin(false);
		mainWindow.setSizeFull();
		setMainWindow(mainWindow); 
		
		iniciarWebseal();
		setTheme("gestion-efectivo");
		//setTheme("runo");
	}

	private void iniciarWebseal(){
		//mainWindow=new Window();
		//String login=null;
		//ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
		//		.currentRequestAttributes();
		//HttpServletRequest request = requestAttributes.getRequest();
//		ServiciosSeguridadBbva ssBbva = new ServiciosSeguridadBbva(request);
//		try {
//			ssBbva.obtener_ID();
//			login=ssBbva.getUsuario();
//		} catch (Exception e) {
//			logger.info("No se ingresa por WebSeal");
//		}
//		if(login==null){
			mainWindow.setCaption("Login");
			mainWindow.addComponent(new LoginUI());
//		}else{
//			Usuario usuario = seguridadService.login(login);
//	        if(usuario != null)
//	        {
//	    		HttpSession session = request.getSession(true);
//	    		//session.setAttribute(Constante.SESION.USUARIO, usuario);
//	    		mainWindow.addComponent(new PrincipalUI());
//	    		mainWindow.getContent().setHeight("100%");
//	    		mainWindow.getLayout().setMargin(false);
	        //}
//		}
	}
	
//	@Override
//	public void terminalError(Terminal.ErrorEvent event) {
//		String defaultMessage = "Mensaje no especificado";
//		if(event.getThrowable().getCause() instanceof AlertaException){
//			resolverAlertaException((AlertaException) event.getThrowable().getCause(), defaultMessage);
//		}else if(event.getThrowable().getCause() instanceof ErrorException){
//			resolverErrorException((ErrorException) event.getThrowable().getCause(), defaultMessage);
//		}else{
//			resolverException(event.getThrowable().getCause(), defaultMessage);
//			super.terminalError(event);
//		}
//	}
//
//	private void resolverAlertaException(AlertaException alertaException,
//			String defaultMessage) {
//		String mensaje = messageSource.getMessage(
//				alertaException.getCodigoMensaje(), 
//				alertaException.getArgs(), 
//        		defaultMessage, this.getLocale());
//		
//		mainWindow.showNotification(
//				alertaException.getTitulo(),
//				mensaje,
//                Notification.TYPE_WARNING_MESSAGE);
//		logger.info("Reniec Alerta [" + alertaException.getTitulo() + "=" + mensaje + "]");
//	}
//	
//	private void resolverErrorException(ErrorException errorException,
//			String defaultMessage) {
//		
//		String mensaje = messageSource.getMessage(
//				errorException.getCodigoMensaje(), 
//				errorException.getArgs(), 
//        		defaultMessage, this.getLocale());
//		
//		mainWindow.showNotification(
//				errorException.getTitulo(),
//				mensaje,
//                Notification.TYPE_ERROR_MESSAGE);		
//		
//		logger.error("Reniec Error [" + errorException.getTitulo() + "=" + mensaje + "]", errorException);
//	}
//	
//	private void resolverException(Throwable cause, String defaultMessage) {
//		mainWindow.showNotification(
//                "ERROR inesperado",
//                messageSource.getMessage(
//                		Constante.CODIGO_MENSAJE.ERROR_GENERICO, 
//                		null, 
//                		defaultMessage, this.getLocale()),
//                Notification.TYPE_ERROR_MESSAGE);
//		logger.error("Reniec: Error inesperado", cause);
//	}
//	
//	public static SystemMessages getSystemMessages() {
//		Parametro parametroURL = getConfiguracionService().obtenerParametroxCodigo(Constante.PARAMETRO.URL_LOGOUT);
//		CustomizedSystemMessages m = new CustomizedSystemMessages();
//		m.setSessionExpiredCaption("Su sesión en WebSEAL ha terminado, favor de ingresar de nuevo.");
//		m.setSessionExpiredURL(parametroURL.getValor());
//		m.setCommunicationErrorCaption("Su sesión en WebSEAL ha terminado, favor de ingresar de nuevo.");
//		m.setCommunicationErrorURL(parametroURL.getValor());
//		return m;
//	}
//
//	public static ConfiguracionService getConfiguracionService() {
//		if(springContext == null){ 
//			ServletRequestAttributes requestAttributes = 
//					(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
//			HttpServletRequest request = requestAttributes.getRequest();
//			HttpSession session = request.getSession(false);
//
//			springContext = 
//					WebApplicationContextUtils.getRequiredWebApplicationContext(session.getServletContext());
//			}
//		if(configuracionService == null){
//			configuracionService = (ConfiguracionService)springContext.getBean("configuracionService", ConfiguracionService.class);
//		}
//		return configuracionService;
//	}
}
